package trim.scripting.engine;

import java.io.File;
import java.io.InputStream;
import java.io.Reader;
import trim.scripting.interfaces.IExportManager;
import trim.scripting.interfaces.IImportData;
import trim.scripting.interfaces.IPlaginManager;
import trim.scripting.interfaces.IResultListManager;
import trim.scripting.interfaces.IStateWindow;

/**
 * IScriptEngine.java
 *
 * Интерфейс, описывающий функциональность скрипта
 *
 * @author Podorov Alexander
 */
public interface IScriptEngine
{

  /**
   * Запуск скрипта на выполнение
   *
   * @param code - исходный код скрипта
   * @param exportManager - менеджер экспорта данных
   * @param importData - менеджер импорта данных
   * @param resultListManager - менеджер отображения решений
   * @param stateWindow - статусное окно
   * @param testGenerator - генератор тестов
   * @throws ScriptException
   */
  public void run(String code,IExportManager exportManager,IImportData importData,
    IResultListManager resultListManager,IStateWindow stateWindow,IPlaginManager pm) throws ScriptException;

  /**
   * Запуск скрипта на выполнение
   *
   * @param inputStream - байтовый входной поток, последовательная передача исходного кода скрипта
   * @param exportManager - менеджер экспорта данных
   * @param importData - менеджер импорта данных
   * @param resultListManager - менеджер отображения решений
   * @param stateWindow - статусное окно
   * @param testGenerator - генератор тестов
   * @throws ScriptException
   */
  public void run(InputStream inputStream,IExportManager exportManager,
    IImportData importData,IResultListManager resultListManager,
    IStateWindow stateWindow,IPlaginManager pm) throws ScriptException;

  /**
   * Запуск скрипта на выполнение
   *
   * @param file - файл с исходным кодом скрипта
   * @param exportManager - менеджер экспорта данных
   * @param importData - менеджер импорта данных
   * @param resultListManager - менеджер отображения решений
   * @param stateWindow - статусное окно
   * @param testGenerator - генератор тестов
   * @throws ScriptException
   */
  public void run(File file,IExportManager exportManager,
    IImportData importData,IResultListManager resultListManager,
    IStateWindow stateWindow,IPlaginManager pm) throws ScriptException;

  /**
   * Запуск скрипта на выполнение
   *
   * @param reader - символьный входной поток, последовательная передача исходного кода скрипта
   * @param exportManager - менеджер экспорта данных
   * @param importData - менеджер импорта данных
   * @param resultListManager - менеджер отображения решений
   * @param stateWindow - статусное окно
   * @param testGenerator - генератор тестов
   * @throws ScriptException
   */
  public void run(Reader reader,IExportManager exportManager,
    IImportData importData,IResultListManager resultListManager,
    IStateWindow stateWindow,IPlaginManager pm) throws ScriptException;
}
